Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/insert image to prompt #6

Merged
merged 12 commits into from
Jan 6, 2025
Merged

Conversation

pacificbelt30
Copy link
Collaborator

@pacificbelt30 pacificbelt30 commented Aug 9, 2024

概要 PRでの対応内容の概要

Issue 内の画像を LLM のプロンプトに含める機能

原因と対処法(バグ修正の場合) 何が原因と判断し、どう対処したのか

特になし

やったこと 対応内容を簡潔にリストアップ

Main

  • Issues の画像を読む(![image](url) となっている部分から URL 部分を抜き出してクエリし,画像を保存,後に削除)
  • OpenAI と VertexAI それぞれでプロンプトに画像を含めるようにした

Appendix

  • OpenAI を使う場合に System プロンプトと User プロンプトを分離
    • これまでは User プロンプトにまとめて入れていた
    • この変更による出力への影響は不明です(プロンプトインジェクションなどへの耐性は向上するかも)
    • system プロンプトのデフォルトが "You are a helpful assistant" らしく,今回のコミットではこれを config.yaml の各 system_prompt に上書きしている(08/09 13:20 追記)
  • main.go のスペースをタブ文字に変換(VSCode の拡張機能で自動でかかるコードフォーマットによるものです)

変更結果 操作動画やスクショ、レスポンス内容など

  • 実行後のログ
go run ./cmd/main.go -owner pacificbelt30 -issue 8 -repo "actions_tester" -github-token $GITHUB_TOKEN -api-key $OPENAI_API_KEY -command describe -config ./config.yaml                                                           ─╯
2024/08/09 11:22:01 /home/user/work/3shake/alert-menta/internal/utils/utils.go:95: [alert-menta utils] Config: &{{{true debug}} {map[ask:{Ask a question about the GitHub Issue The following is the GitHub Issue and comments on it. Based on the content provide a detailed response to the following question:
} describe:{Describe the GitHub Issues Please describe attached image in detail.} improve:{Improve the GitHub Issues The following is the GitHub Issue and comments on it. Please identify the issues that need to be resolved based on the contents of the Issue and provide three suggestions for improvement.}] openai {gpt-4o-mini-2024-07-18} {gemini-1.5-flash-001 gen-ai-lab-391309 }} {pacificbelt30 alert-menta}}
2024/08/09 11:22:01 /home/user/work/3shake/alert-menta/cmd/main.go:71: [alert-menta main] Title: Test Issue
2024/08/09 11:22:01 /home/user/work/3shake/alert-menta/cmd/main.go:72: [alert-menta main] Body: This is Test Issue
2024/08/09 11:22:01 /home/user/work/3shake/alert-menta/cmd/main.go:88: [alert-menta main] pacificbelt30: This is Test Image
![testimg](https://github.com/user-attachments/assets/85f0bdfb-b040-4b5e-827f-925e1e20b007)
2024/08/09 11:22:01 /home/user/work/3shake/alert-menta/cmd/main.go:96: [alert-menta main] https://github.com/user-attachments/assets/85f0bdfb-b040-4b5e-827f-925e1e20b007
2024/08/09 11:22:02 remove /tmp/downloaded-image-4019109815 Content-Type: image/png
2024/08/09 11:22:02 /home/user/work/3shake/alert-menta/cmd/main.go:120: [alert-menta main] Prompt: |
 Please describe attached image in detail. Title:Test Issue
Body:This is Test Issue
pacificbelt30:This is Test Image
![testimg](https://github.com/user-attachments/assets/85f0bdfb-b040-4b5e-827f-925e1e20b007)
 
2024/08/09 11:22:02 /home/user/work/3shake/alert-menta/cmd/main.go:131: [alert-menta main] Using OpenAI API
2024/08/09 11:22:02 /home/user/work/3shake/alert-menta/cmd/main.go:132: [alert-menta main] OpenAI model: gpt-4o-mini-2024-07-18
2024/08/09 11:22:04 /home/user/work/3shake/alert-menta/cmd/main.go:140: [alert-menta main] Response: The image contains the text "This is Test Image" displayed prominently against a white background. The text is in a simple, black font and is centrally aligned in the image. There are no additional graphics or elements present, making it a straightforward presentation of the text. 
2024/08/09 11:22:05 /home/user/work/3shake/alert-menta/internal/github/github.go:67: [alert-menta github] Comment created successfully on Issue 8
  • 実行後の出力例
    • 画像の内容を説明するようにプロンプトを変更し,実行すると,画像に書かれている内容を理解しているレスポンスが得られる
      image

やらないこと このPRでスコープ外とする内容

注意事項 マージした後はこのコマンドを実行してね、などメンバーに知らせるべき内容

  • ai.Prompt 構造体に Images フィールドを追加したため,他の機能で Prompt 構造体を使った実装をしている場合は変更が必要になる可能性
  • OpenAI を使う場合に画像をプロンプトに含めるには GPT-4以降が必要なため,config.yaml の model を変更する必要がある
    • GPT-4o-mini を使う場合は以下のように変更
ai:
  provider: "openai" # "openai" or "vertexai"
  openai:
-    model: "gpt-3.5-turbo"
+    model: "gpt-4o-mini-2024-07-18"

どうやるのか 変更後の使い方や再現(確認)手順

コマンドはそのまま.
画像を付加した Issue がある場合に,それを読むようになっているため,適当な画像を付加した Issue を対象に実行すると確認できる.

課題 悩んでいるところ、とくにレビューしてほしいところ(これは直接ソースにコメントしてもいいと思います。)

特になし

備考 その他追記事項、関連資料や参考資料などをまとめる

  • 画像の入力を考慮したプロンプトを考える必要があるかもしれない

internal/ai/openai.go Show resolved Hide resolved
cmd/main.go Outdated Show resolved Hide resolved
@kechigon kechigon merged commit 007fbfb into develop Jan 6, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants